package com.foreveross.fetl.common.domain;

import java.io.Serializable;
import java.util.List;

import com.foreveross.fetl.common.InstanceFactory;
import com.foreveross.fetl.common.jpa.EntityHBaseRepository;
import com.foreveross.fetl.common.jpa.IBaseRepository;
public abstract class BaseHBaseEntity extends BaseEntity {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8227836577259237059L;

	@Override
	public IBaseRepository getBaseEntityRepository() {
		return InstanceFactory.getInstance(IBaseRepository.class, "defaultEntityHBaseRepository");
	}
	/**
	 * hbase的rowkey生成
	 * @return
	 */
	public abstract String generateRowKey();

	@Override
	public IBaseEntity get(Serializable id) {
		return getBaseEntityRepository().get(this.getClass(), id);
	}

	@Override
	public boolean exists(Serializable id) {
		return getBaseEntityRepository().exists(this.getClass(), id);
	}

	@Override
	public List<? extends BaseEntity> findAll() {
		return getBaseEntityRepository().findAll(this.getClass());
	}

	@Override
	public void create() {
		getBaseEntityRepository().create(this);
	}

	@Override
	public void update() {
		getBaseEntityRepository().update(this);
	}

	@Override
	public void delete() {
		getBaseEntityRepository().delete(this);
	}

	@Override
	public void save() {
		getBaseEntityRepository().save(this);
	}
	
	
}
